#include <iostream>

class test {
public:
    template<typename T, typename D>
    int add(T num1, D num2);

private:
    /* data */
};

template<typename T, typename D>
int test::add(T num1, D num2)
{
	return int(num1 + num2);
}

template<>
int test::add(int num1, int num2) {
    std::cout<<"---------------"<<std::endl;
	return int(num1 + num2);
}

template<typename T, typename D>
int sum(T num1, D num2)
{
	return int(num1 + num2);
}
template<>
int sum(int num1, int num2) {
    std::cout<<"---------------"<<std::endl;
	return int(num1 + num2);
}

int main(int argc, char **argv)
{
    test xx;
	std::cout<<xx.add(1.1, 1.2f)<<std::endl;
	std::cout<<xx.add(1, 1)<<std::endl;
	return 0;
}
